package controlador;

 import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.FontFactory;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;

import java.awt.Desktop;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

import modelo.LoteDAO;
import modelo.Pieza;
import modelo.ReporteDAO;
 /**
  * @web http://jc-mouse.blogspot.com/
  * @author Mouse
  */
 public class ControladorReportePiezas {
	 
	 SimpleDateFormat formatoDeHora = new SimpleDateFormat("_yyyy_MM_dd HH_mm_ss");
	 ReporteDAO reporteDAO  = new ReporteDAO();
	 ArrayList<Pieza> piezas = new ArrayList<Pieza>();
     
     public ControladorReportePiezas() {
		super();
		try {
			tablaspdf();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public void tablaspdf() throws DocumentException, FileNotFoundException{         
         // se crea instancia del documento
         Document mipdf = new Document();
         String appPath = System.getProperties().getProperty("user.dir"); 
 		String nombreArchivo = appPath + "_Reporte_Estadistico_" + formatoDeHora.format( new Date()) + ".pdf";
         // se establece una instancia a un documento pdf
         PdfWriter.getInstance(mipdf, new FileOutputStream(new File(nombreArchivo)));
         mipdf.open(); // se abre el documento
         mipdf.add(new Paragraph("                                             LISTADO DE ENTRADAS (PIEZAS) "));
         mipdf.add(new Paragraph("\n \n"));
        // mipdf.add(new Paragraph("================================================================="));
             
         mipdf.addTitle("Tablas con itext"); // se añade el titulo
         mipdf.addAuthor("jc mouse"); // se añade el autor del documento
         mipdf.addSubject("ocio"); //se añade el asunto del documento
         mipdf.addKeywords("jc mouse"); //Se agregan palabras claves                            
             
         /* ahora si tablas */           
        // mipdf.add(Tabla_Simple());
         mipdf.add(Tabla_compleja());
         mipdf.close(); //se cierra el PDF               
         System.out.println("documento pdf creado");
         try {
	            File path = new File (nombreArchivo);
	            Desktop.getDesktop().open(path);
	    }catch (IOException ex) {
	            ex.printStackTrace();
	    }
     }
     
     public PdfPTable Tabla_Simple(){    
         //creamos la tabla con 3 columnas
         PdfPTable mitablasimple=new PdfPTable(3);
         //añadimos contenido a las celdas
         mitablasimple.addCell("Enero");
         mitablasimple.addCell("Febrero");
         mitablasimple.addCell("Marzo");
         mitablasimple.addCell("Abril");
         mitablasimple.addCell("Mayo");
         mitablasimple.addCell("Junio");
         mitablasimple.addCell("Julio");
         mitablasimple.addCell("Agosto");
         mitablasimple.addCell("Septiembre");
         mitablasimple.addCell("Octubre");
         //retornamos la tabla
         return mitablasimple;        
     }
     
     public PdfPTable Tabla_compleja(){ 
         //creamos una tabla con 3 columnas
         PdfPTable mitablacompleja=new PdfPTable(5);
         //añadimos texto con formato a la primera celda
         PdfPCell celda =new PdfPCell (new Paragraph());             // color
//         //unimos esta celda con otras 2
//         celda.setColspan(5);
//         //alineamos el contenido al centro
//         celda.setHorizontalAlignment(Element.ALIGN_CENTER);
//         // añadimos un espaciado
//         celda.setPadding (12.0f);
//         //colocamos un color de fondo
//         celda.setBackgroundColor(BaseColor.WHITE);
//         //se añade a la tabla
//        mitablacompleja.addCell(celda);
//         
         //fila 2
         celda = new PdfPCell(new Paragraph ("CODIGO DE PIEZA"));
         celda.setBackgroundColor(BaseColor.WHITE);
        mitablacompleja.addCell(celda);        
         celda = new PdfPCell(new Paragraph ("PESO"));        
         celda.setBackgroundColor(BaseColor.WHITE);
         mitablacompleja.addCell(celda);
         //fila 3        
         celda = new PdfPCell(new Paragraph ("PRECIO"));
         celda.setBackgroundColor(BaseColor.WHITE);
         mitablacompleja.addCell(celda);        
         celda = new PdfPCell(new Paragraph ("FECHA DE SACRIFICIO"));        
         celda.setBackgroundColor(BaseColor.WHITE);
         mitablacompleja.addCell(celda);
         //fila 4        
         celda = new PdfPCell(new Paragraph ("FECHA DE COMPRA"));
         celda.setBackgroundColor(BaseColor.WHITE);
         mitablacompleja.addCell(celda);  
         
         ArrayList<Pieza> piezas = reporteDAO.consultarPiezas();
         
         for (int i = 0; i < piezas.size(); i++) {
        	
        	 //fila 2
             celda = new PdfPCell(new Paragraph (piezas.get(i).getCodigoPieza()));
             celda.setBackgroundColor(BaseColor.WHITE);
            mitablacompleja.addCell(celda);        
             celda = new PdfPCell(new Paragraph (String.valueOf(piezas.get(i).getPeso())));        
             celda.setBackgroundColor(BaseColor.WHITE);
             mitablacompleja.addCell(celda);
             //fila 3        
             celda = new PdfPCell(new Paragraph (String.valueOf(piezas.get(i).getPrecio())));
             celda.setBackgroundColor(BaseColor.WHITE);
             mitablacompleja.addCell(celda);        
             celda = new PdfPCell(new Paragraph (String.valueOf(piezas.get(i).getFecha())));        
             celda.setBackgroundColor(BaseColor.WHITE);
             mitablacompleja.addCell(celda);
             //fila 4   
             String fecha = String.valueOf(LoteDAO.buscarLote(piezas.get(i).getNroLote()).getFechaLote());
             celda = new PdfPCell(new Paragraph (fecha));
             celda.setBackgroundColor(BaseColor.WHITE);
             mitablacompleja.addCell(celda);
         }
       
         // se retorna la tabla
         return mitablacompleja;    
    }
}